#!usr/bin/env node

//引入模块
const process = require('process');
const os = require('os');
const { exec } = require('child_process');
const { error } = require('console');
const { errorMonitor } = require('events');
//获取命令行参数
// const argv = process.argv;

// //调用process的kill方法
// //process.kill(第一个参数为：进程id,第二个参数为：信号码)
// console.log(process.pid);
// porcess.kill(argv[2], argv[3]);

//检查命令行参数的数量
if (process.argv.length !== 4) {
  console.error('Usage:node 06-my-kill.js <pid><signal>');
  process.exit(1);//参数不正确时，以退出码1退出
}

//获取命令行参数中的进程ID和信号量
const pid = parseInt(process.argv[2], 10);
const signal = process.argv[3];

//校验进程ID是否是有效的数字
if (isNaN(pid) || pid <= 0) {
  console.error('Error:PID must be a positive integer.');
  process.exit(1);//进程ID不合法时，以退出码1退出
}

//校验信号量是否合法
if (!(signal in os.constants.signals)) {
  console.error(`Error:Invalid signal
    '${signal}'.Valid signals are:${Object.keys(os.constants.signals).join(',')}`);
  process.exit(1);//信号量不合法时，以退出码1退出
}

//向指定的进程ID发送信号
exec(`kill -${signal} ${pid}`, (error, stdout, stderr) => {
  if (error) {
    console.error(`Error sending signal:${error.message}`);
    process.exit(1)
  } else {
    console.log(`Signal ${signal} sent to process ${pid}`);
  }
});
